草庐IT

c++ - QML Qt openUrlExternally

全部标签

c++ - 边缘相交算法?

给定多边形P,我按顺序排列了它的顶点。我有一个有4个顶点的矩形R我该怎么做:如果P的任何边(相邻顶点之间的线)与R的边相交,则返回TRUE,否则返回FALSE。谢谢**** 最佳答案 您需要的是一种快速确定线段是否与轴对齐矩形相交的方法。然后只需根据矩形检查边缘列表中的每个线段。您可以执行以下操作:1)将直线投影到X轴上,得到一个区间Lx。2)将矩形投影到X轴上,得到一个区间Rx。3)如果Lx和Rx不相交,直线和矩形不相交。[Y轴重复]:4)将直线投影到Y轴上,得到一个区间Ly。5)将矩形投影到Y轴上,得到一个区间Ry。6)如果Ly

c++ - 简化三次贝塞尔路径?

我正在尝试实现类似于Adob​​eIllustrator使用画笔工具所做的事情。它正确地分析和简化了路径,包括它的贝塞尔曲线图柄。我实现了Ramer–Douglas–Peucker_algorithm但是,它最终并不是我真正需要的。它适用于线段,但不考虑贝塞尔曲线图柄。有没有一种算法可以像这个算法一样做,但考虑到三次贝塞尔handle?这个的问题是曲线可能成一定角度,但算法只能看到一条直线。谢谢 最佳答案 您可能想要探索贝塞尔曲线的最小二乘法拟合。这是onethread和apdf这可能会有帮助..几年前我做过这种事情,并找到了一个G

c++ - 堆喷射攻击是如何工作的?

我读过两篇关于堆喷射的文章:Wikiepdia和thisblogpost.我了解如何将shell代码引入程序的内存中。但是程序是如何跳转到/调用位于堆上的地址内存的呢?什么样的崩溃会调用堆?这种攻击是否需要用一种缓冲区溢出攻击来进行?有没有像缓冲区溢出的黄金法则,即使用函数的n版本(strncpy而不是strcpy)? 最佳答案 如果我没理解错的话,Theycommonlytakeadvantagefromthefactthattheseheapblockswillroughlybeinthesamelocationeverytim

c++ - 如何使用 C/C++ 生成网络数据包

我想生成一个网络数据包以通过(例如)端口123发送到NTP服务器,以便我可以接收和解析返回的数据包。目标是更好地了解网络系统如何生成、读取和回复数据包。(1)是否应该使用结构体来生成数据包?(2)我不确定如何正确填充结构中的各个字段;例如,源IP地址和目标IP地址是否应该设置为十六进制值?还是有更人性化的方式?(3)然后,一旦填充了字段,是否可以通过UDP连接通过send()/write()将结构发送到NTP服务器?(或TCP,如果协议(protocol)要求的话)我的做法合理吗?我一直在阅读NTPRFC,但我仍然不确定我的客户端应该向服务器发送什么(例如IP地址;这不应该由网络层he

c++ - 可以将核心文件恢复到正在运行的程序中吗?

我有一个tool以核心文件的形式生成我的C程序运行时的快照。是否可以将这些核心文件恢复为可执行程序?如果是这样,我该怎么做?是否有任何图书馆已经这样做了?我在*nix系统上工作。 最佳答案 是的,理论上是这样。如果您的快照是程序整个内存、堆栈、堆以及PC的完整转储,则可以将此转储放回内存中并再次启动执行过程。但我认为您必须在内核领域执行此操作。 关于c++-可以将核心文件恢复到正在运行的程序中吗?,我们在StackOverflow上找到一个类似的问题: htt

c++ - 具有线程本地存储的自定义内存管理器

在我们的程序中有一个自定义的内存管理器,我们所有的malloc/free调用都由内存管理器管理,但是在程序的初始阶段getpwuid()将被调用,并且在一些客户的机器上激活了nss_ldap将从libc而不是我们的内存管理器调用malloc,这会导致我们的内存管理器出错,gdb的堆栈报告是:Breakpoint2,0x0000003df8cc6eb0inbrk()from/lib64/libc.so.600x0000003df8cc6eb0inbrk()from/lib64/libc.so.610x0000003df8cc6f72insbrk()from/lib64/libc.so.6

c++ - D 构建过程

在D中构建(编译和链接)源代码的过程与C/C++有何不同,尤其是在内联函数、D的模块系统(而不是header)和构建工具方面。如何在D中重用模板实例化? 最佳答案 差别不大,每个模块都被编译成自己的obj文件,然后链接在一起,IIRC与C/C++进程没有什么不同然而,主要区别在于导入是符号而不是C的整个文件#include,这消除了对头文件的需要(尽管headerlike.di文件的选项有闭源API吗)尽管模板确实需要包含在编译器可用的文件中(就像它们需要包含在C++的header中一样)

c++ - 展开 C 或 C++ 源文件中的单个宏

我有大量的c++源文件,我想通过扩展我指定的单个函数宏来转换它们,并保持所有其他预处理指令不变。宏的参数通常会涉及括号和大括号以及括号保护的逗号,因此使用sed和kin执行此操作似乎并不直接。更新:我们的代码大量使用宏来生成样板(例如swig的帮助程序代码)。随着我们更好地弄清楚如何做某些事情,各种宏不再做任何非常有趣的事情(例如,只是声明一些函数),许多人提示它们使代码更难阅读。我想扩展那些不太有趣的宏,这些宏可以扩展为简单的C++代码。 最佳答案 我通过在python中使用正则表达式来完成这类事情。您可以编写一个相当短的脚本来处

c++ - 相同的内容,不同的 MD5 - 文件和字符串

我有一个文件testfile和一个字符串teststring。我在shell中写道:echo"a">测试文件然后xxd测试文件所以我可以看到我的文件内容的十六进制值输出:0000000:610aa.查看我的代码:intfile;structstats;unsignedlongsize;char*buffer;charmd5[MD5_DIGEST_LENGTH]file=open("testfile",O_RDONLY);if(file它打印:filesize:260b725f10c9c85c70d97880dfe8191b3e29311f6f1bf1af907f9ef9f44b8328

c++ - 为什么添加额外的检查循环会在某些机器上产生很大的差异,而在其他机器上却产生很小的差异?

我一直在做一些测试,看看额外的边界检查对循环有多大影响。当您访问数组时,考虑到由C#、Java等语言插入的隐式边界检查的成本,从而提示了这一点。更新:我在另外几台计算机上尝试了相同的可执行程序,这让我对正在发生的事情有了更多了解。我首先列出了原始计算机,其次列出了我的现代笔记本电脑。在我的现代笔记本电脑上,在循环中添加额外的检查只会增加1%到4%的时间,而原始硬件的时间增加了3%到30%。Processorx86Family6Model30Stepping5GenuineIntel~2793MhzRatio2checks:1check=1.0310Ratio3checks:1check